The graph of $y=f(x)$ for $-3\le x\le 3$ is shown below. On this interval, what is the range of $f(x)-x$? Express your answer in interval notation.

[asy]
size(150);
real ticklen=3;
real tickspace=2;

real ticklength=0.1cm;
real axisarrowsize=0.14cm;
pen axispen=black+1.3bp;
real vectorarrowsize=0.2cm;
real tickdown=-0.5;
real tickdownlength=-0.15inch;
real tickdownbase=0.3;
real wholetickdown=tickdown;
void rr_cartesian_axes(real xleft, real xright, real ybottom, real ytop, real xstep=1, real ystep=1, bool useticks=false, bool complexplane=false, bool usegrid=true) {

import graph;

real i;

if(complexplane) {

label("$\textnormal{Re}$",(xright,0),SE);

label("$\textnormal{Im}$",(0,ytop),NW);

} else {

label("$x$",(xright+0.4,-0.5));

label("$y$",(-0.5,ytop+0.2));

}

ylimits(ybottom,ytop);

xlimits( xleft, xright);

real[] TicksArrx,TicksArry;

for(i=xleft+xstep; i<xright; i+=xstep) {

if(abs(i) >0.1) {

TicksArrx.push(i);

}

}

for(i=ybottom+ystep; i<ytop; i+=ystep) {

if(abs(i) >0.1) {

TicksArry.push(i);

}

}

if(usegrid) {

xaxis(BottomTop(extend=false), Ticks("%", TicksArrx ,pTick=gray(0.22),extend=true),p=invisible);//,above=true);

yaxis(LeftRight(extend=false),Ticks("%", TicksArry ,pTick=gray(0.22),extend=true), p=invisible);//,Arrows);

}

if(useticks) {

xequals(0, ymin=ybottom, ymax=ytop, p=axispen, Ticks("%",TicksArry , pTick=black+0.8bp,Size=ticklength), above=true, Arrows(size=axisarrowsize));

yequals(0, xmin=xleft, xmax=xright, p=axispen, Ticks("%",TicksArrx , pTick=black+0.8bp,Size=ticklength), above=true, Arrows(size=axisarrowsize));

} else {

xequals(0, ymin=ybottom, ymax=ytop, p=axispen, above=true, Arrows(size=axisarrowsize));

yequals(0, xmin=xleft, xmax=xright, p=axispen, above=true, Arrows(size=axisarrowsize));

}
};
rr_cartesian_axes(-3,3,-3,3);
draw((-3,-3)--(-2,-3),red+1);
draw((-2,-2)--(-1,-2),red+1);
draw((-1,-1)--(0,-1),red+1);
draw((0,0)--(1,0),red+1);
draw((1,1)--(2,1),red+1);
draw((2,2)--(3,2),red+1);
dot((-3,-3),red); dot((-2,-2),red); dot((-1,-1),red); dot((0,0),red); dot((1,1),red); dot((2,2),red); dot((3,3),red);
dot((-2,-3),red,UnFill); dot((-1,-2),red,UnFill); dot((0,-1),red,UnFill); dot((1,0),red,UnFill); dot((2,1),red,UnFill); dot((3,2),red,UnFill);
[/asy]
We can superimpose the graph of $y=x$ on the graph of $y=f(x)$: [asy]
size(150);
real ticklen=3;
real tickspace=2;

real ticklength=0.1cm;
real axisarrowsize=0.14cm;
pen axispen=black+1.3bp;
real vectorarrowsize=0.2cm;
real tickdown=-0.5;
real tickdownlength=-0.15inch;
real tickdownbase=0.3;
real wholetickdown=tickdown;
void rr_cartesian_axes(real xleft, real xright, real ybottom, real ytop, real xstep=1, real ystep=1, bool useticks=false, bool complexplane=false, bool usegrid=true) {

import graph;

real i;

if(complexplane) {

label("$\textnormal{Re}$",(xright,0),SE);

label("$\textnormal{Im}$",(0,ytop),NW);

} else {

label("$x$",(xright+0.4,-0.5));

label("$y$",(-0.5,ytop+0.2));

}

ylimits(ybottom,ytop);

xlimits( xleft, xright);

real[] TicksArrx,TicksArry;

for(i=xleft+xstep; i<xright; i+=xstep) {

if(abs(i) >0.1) {

TicksArrx.push(i);

}

}

for(i=ybottom+ystep; i<ytop; i+=ystep) {

if(abs(i) >0.1) {

TicksArry.push(i);

}

}

if(usegrid) {

xaxis(BottomTop(extend=false), Ticks("%", TicksArrx ,pTick=gray(0.22),extend=true),p=invisible);//,above=true);

yaxis(LeftRight(extend=false),Ticks("%", TicksArry ,pTick=gray(0.22),extend=true), p=invisible);//,Arrows);

}

if(useticks) {

xequals(0, ymin=ybottom, ymax=ytop, p=axispen, Ticks("%",TicksArry , pTick=black+0.8bp,Size=ticklength), above=true, Arrows(size=axisarrowsize));

yequals(0, xmin=xleft, xmax=xright, p=axispen, Ticks("%",TicksArrx , pTick=black+0.8bp,Size=ticklength), above=true, Arrows(size=axisarrowsize));

} else {

xequals(0, ymin=ybottom, ymax=ytop, p=axispen, above=true, Arrows(size=axisarrowsize));

yequals(0, xmin=xleft, xmax=xright, p=axispen, above=true, Arrows(size=axisarrowsize));

}
};
rr_cartesian_axes(-3,3,-3,3);
draw((-3,-3)--(3,3),green+1);
draw((-3,-3)--(-2,-3),red+1);
draw((-2,-2)--(-1,-2),red+1);
draw((-1,-1)--(0,-1),red+1);
draw((0,0)--(1,0),red+1);
draw((1,1)--(2,1),red+1);
draw((2,2)--(3,2),red+1);
dot((-3,-3),red); dot((-2,-2),red); dot((-1,-1),red); dot((0,0),red); dot((1,1),red); dot((2,2),red); dot((3,3),red);
dot((-2,-3),red,UnFill); dot((-1,-2),red,UnFill); dot((0,-1),red,UnFill); dot((1,0),red,UnFill); dot((2,1),red,UnFill); dot((3,2),red,UnFill);
[/asy]

Then $|f(a)-a|$ is the vertical distance from the green to the red graph at $x=a$. We can see that this distance varies from $0$ to $1$, inclusive of $0$ but not of $1$ (since the hollow dots on the graph of $y=f(x)$ represent points which are not part of the graph). Since $f(x)\le x$ for all $x$, we see that $f(x)-x$ is zero or negative, and its range is $\boxed{(-1,0]}$.